package io.github.wslxm.springbootplus2.manage.login.service;

import io.github.wslxm.springbootplus2.core.config.error.ErrorException;
import io.github.wslxm.springbootplus2.manage.login.model.dto.LoginDTO;
import io.github.wslxm.springbootplus2.manage.sys.model.entity.SysUser;

/**
 * 自定义登录验证 (子模块中自定义实现)
 *
 * @author 王松
 * @mail 1720696548@qq.com
 * @date 2025/5/16 10:44
 */
public interface LoginHandler {

    /**
     * 登录前验证
     * <p>
     * 用户信息存在触发, 用户信息不存在时不触发
     * <p/>
     *
     * @param dto 登录参数
     */
    void validate(LoginDTO dto, SysUser sysUser);

    /**
     * 登录成功
     *
     * @param sysUser 返回用户信息
     */
    void success(LoginDTO dto, SysUser sysUser);

    /**
     * 登录失败
     *
     * @param sysUser        用户信息
     * @param errorException 失败原因
     */
    void fail(LoginDTO dto, SysUser sysUser, ErrorException errorException);
}